#include <iostream>
#include <vector>
using namespace std;

/*给你一个下标从 0 开始的字符串 text 和另一个下标从 0 开始且长度为 2 的字符串 pattern ，两者都只包含小写英文字母。

你可以在 text 中任意位置插入 一个 字符，这个插入的字符必须是 pattern[0] 或者 pattern[1] 。注意，这个字符可以插入在 text 开头或者结尾的位置。

请你返回插入一个字符后，text 中最多包含多少个等于 pattern 的 子序列 。

子序列 指的是将一个字符串删除若干个字符后（也可以不删除），剩余字符保持原本顺序得到的字符串。*/


//贪心：因为原个数固定，求插入后增加个数的最大值即可
long long maximumSubsequenceCount(string text, string pattern)
{
    int cntx = 0, cnty = 0;
    long long ret = 0;
    for (auto c : text)
    {
        if (c == pattern[1])
        {
            ++cnty;
            ret += cntx;//统计原来子序列个数
        }
        if (c == pattern[0])
            ++cntx;
    }
    //显然分别插入在最左和最右最优
    //pattern[0]插入在最左则多cnty个子序列
    //pattern[1]插入在最右则多cntx个子序列
    ret += max(cntx, cnty);
    return ret;
}

int main()
{
    cout << maximumSubsequenceCount("abdcdbc","ac") << endl;
    return 0;
}